今天來介紹跟多使用DOCKER安裝ROS2的血淚史
Docker是一個開源的軟體平台,可用來快速的開發、測試和發布應用程式,目標是提供一個快速且輕量的虛擬化方案。
p.s. 另外一個虛擬化技術是VM (Virtual Machine虛擬機器),是基於你的實體主機電腦上,再提供另外一台虛擬化的電腦。Docker則提供一個容器Container(虛擬化的作業系統),優點就是對系統資源的使用率很高、容器的啟動速度快、基本不消耗額外的系統資源。因為我兩者皆有學習過,拿出來做個比較一下加深印象,具體的感受差異就是VM的前置作業很多,很耗費電腦容量,運行速度又很慢,反觀Docker只要一個指令run一下就有虛擬環境可以用了。
來源:amazon/docker
一起來看看Docker架構包含的物件:
映像檔是一個唯讀模板,內容是建構一個Container的說明。可以自己寫Dockerfile來建立一個映像檔,也以直接使用別人在Docker Hub註冊的映像檔。
p.s. 自己對映像檔理解是在小時候還有拿光碟來灌windows這件事~
映像檔執行後就會生成一個容器,可以被啟動、開始、停止、刪除,各個都是獨立的,同時間可以開啟數個,再依需求連接到網路、儲存空間或使用者權限等等。
倉庫是存放映像檔的地方,Docker Hub就是一個公開的倉庫,也可以建立私人倉庫等等。透過指令docker push/pull
能從Docker Hub或私人倉庫中使用指定的映像檔。
ROS官方有將各個版本的ROS1、ROS2上傳至Docker Hub osrf/ros,能依照自身需求pull。
docker pull osrf/ros //預設為最新板
docker pull osrf/ros:foxy-desktop //foxy
如果想同時開啟兩個容器,可以撰寫docker-compose.yml
version: '2'
services:
talker:
image: osrf/ros:foxy-desktop
command: ros2 run demo_nodes_cpp talker
listener:
image: osrf/ros:foxy-desktop
command: ros2 run demo_nodes_cpp listener
depends_on:
- talker
接著在該檔案位置的terminal下指令
docker-compose up
昨天分享了一種在ubuntu桌面版透過docker使用GUI的其中一種方法,但為了成功使用GUI,我又再次走過了許許多多的歪路!
明日待續。